<?php
class WebApplicationEndBehavior extends CBehavior{
    //Web application end's name
    private $_endName;
    
    //Getter
    //Allows to get the current end's name
    //This way: Yii::app()->endName;
    public function getEndName() {
        return $this->_endName;
    }
    
    //Run application's end
    public function runEnd($name) {
        $this->_endName = $name;
        
        //Attach the changeModulePaths event handler and raise it
        $this->onModuleCreate = array($this, 'changeModulePaths');
        $this->onModuleCreate(new CEvent($this->owner));
        
        $this->owner->run();//Run application
    }
    
    //This event should be raised when CWebApplication or CWebModule instances are being initializzed
    public function onModuleCreate($event){
        $this->raiseEvent('onModuleCreate', $event);
    }
    
    //onModuleCreate event handler.
    //A sender must have controllerPath and viewPath properties
    protected function changeModulePaths($event){
        $event->sender->controllerPath .= DIRECTORY_SEPARATOR.$this->_endName;
        $event->sender->viewPath .= DIRECTORY_SEPARATOR.$this->_endName;
    }
}
